The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
Providers of internetworking services, termed service providers, have worked with vendors of internetworking equipment such as routers and switches to develop the capability to add headers and header data to packets passing through the routers and switches in the service providers' networks. For example, assume that a client computer is coupled to a content server computer through an internet service provider (ISP), and the ISP network has numerous routers and/or switches that are interposed in a logical packet communication path between the client computer and content server. In some situations, when the ISP receives a packet from the client computer that requests content from the content server, the ISP may insert, at one of the routers or switches, one or more headers and header values that are capable of recognition by the content server computer. Based upon terms of service between the ISP and the owner/operator of the content server computer, a different level of service may be provided to the client computer, based upon values in the added headers, by either other elements in the ISP network or by the content server computer.
Adding headers to packets along a path in the ISP network has the advantage of not requiring the ISP to store state data within the network. However, adding headers to the packets increases the total number of bytes communicated between client computer and server computer; therefore, adding headers has the disadvantage of requiring changing the sequence values that the client computer and content server computer maintain under standard provisions of transport control protocol (TCP), because the sequence values reflect the number of bytes that are exchanged.
In one approach, every message communicated between the client computer and content server computer after the addition of a header would require modification of the TCP sequence values in packet headers, even when the subsequent messages do not incur any other subsequent modification. Consequently, an approach of modifying every subsequent message would require significant processing resources. It would also require storing some form of state data indicating which flows had packets with added headers requiring sequence number management. Such an approach would be impractical for implementation in wire-speed internetworking elements that perform substantive action upon relatively few packets of a flow and only perform accounting operations with respect to the vast majority of the packets of the flow, as it would unnecessarily slow down such a device.